Runestone: A Streamlined Text and Code Editor for iPhone and iPad

Runestone is the latest app from Simon Støvring, the developer behind Scriptable, Jayson, and Data Jar. Støvring’s apps tend to be focused on developer or automation use cases, filling holes in the iOS and iPadOS ecosystem to aid power users. Runestone mostly falls into the same category, although it also has some wider potential appeal for general purpose writing.

The new app functions as an excellent plain text editor for anyone who needs to write on their iPhone or iPad. It’s simple and thoughtfully designed, and includes a variety of excellent themes to improve your writing experience. Runestone’s marquee feature, however, is its syntax highlighting. For Markdown writers, the app will use simple color schemes (which can be altered to your liking using the theme settings) and subtle style changes to highlight your links, bold and italic words, footnotes, and more. The result is a very simple, essentially plain-text approach which still makes it easy to see your markup at a glance.

While Runestone functions perfectly well as an app for writers (I’ve written the entirety of this very article using it, and the experience was lovely), that’s ultimately a crowded category with many other equally simple editors that include more writer-focused features. It’s nice that Runestone can perform that use case if needed, but where the app really shines is in a far less fulfilled region of text on iOS and iPadOS: code editing.

The most core function of any code editor is syntax highlighting, and that is what Runestone is built for. The app currently supports highlighting for 28 different file formats, including those for many of the most popular coding languages such as JavaScript, Java, Python, Rust, and Swift. When you open a code file, Runestone automatically detects the language and highlights the code for you. If you open an unknown file format, you can always tap the file’s title in the top-center of the screen to manually set the language to be highlighted.

In my testing, Runestone’s syntax highlighting has been unbelievably fast and reliable. I’ve tried many code editors for iOS and iPadOS over the years, and performance and reliability have been the main areas where they’ve fallen down for me. Opening complex code files can freeze editors up, and highlighting often starts to waver and fail during editing.

I’ve thrown some pretty large and complicated code files at Runestone and so far I haven’t seen it miss a beat. I even dug up some awful old code from a previous job that I was once tasked with refactoring — we’re talking 10,000+ lines of bad spaghetti JavaScript in a single file — and threw it at Runestone. I’ve had good code editors on my Mac choke when trying to highlight these files, but with Runestone I couldn’t even detect a difference between opening them versus opening a file with just ten lines of code. The highlighting was there instantly, scrolling was available instantly, and the highlighting remained perfect when editing the code. This is the most performant code editor I’ve ever seen on an iPad.

Runestone is a free app with a $9.99 in-app purchase to unlock its “Premium” tier of features. Premium is targeted quite heavily at developers for writing code, so if you’re just looking to write Markdown or other simple text in Runestone, the free tier will likely satisfy all of your needs. For developers, Runestone Premium brings a host of excellent quality-of-life improvements that are well worth the cost. Among them: line numbers; custom themes; options for the app icon; a page guide to show when it might be time to wrap your line of code; a line highlighter for the currently selected line; indicators of whitespace for tabs, spaces, and line breaks; a vertical scroll buffer at the bottom of your file, the ability to tweak line height and letter spacing; and more. Also, the Premium tier unlocks a wonderful and nostalgic little minigame surprise that I won’t spoil here, but I adore it.

Particularly once you unlock Premium, Runestone includes a fantastic host of nice settings for developers to tweak to get their coding experience exactly to their liking. I was able to match Runestone up almost exactly to my setup in Nova, my preferred code editor on the Mac.

Runestone also includes even more excellent developer-focused features beyond syntax highlighting, including connecting and editing files on a remote server, advanced search and replace using RegEx, code formatting using Prettier, a ‘Go to Line’ function, intelligent auto-indentation (plus easily available controls for tweaking indentation backward or forward), and more. This app is packed with great stuff that has been long-awaited by developers on the iPad.

The one thing that is sorely needed for Runestone to become a true code editor is tabs. Currently, Runestone can only open a single file at a time, which is ultimately the app’s most limiting factor. I believe Runestone’s ease-of-use and excellent feature set could enable it for legitimate code development with just the addition of this feature. Thankfully, Runestone’s developer has noted that tabs had to be cut from the initial release, so hopefully they’ll be coming along not too far down the line.

If you’re a developer who enjoys using the iPad, I highly recommend checking out Runestone. iPadOS is still lacking many requirements of a true developer ecosystem, but getting a viable code editor is not a bad place to start changing that. For now, particularly without tabs, Runestone may be confined in your development workflow to just minor on-the-go changes. But as a 1.0, this app has enormous potential. I haven’t been excited about a code editor for iPad since Panic’s Diet Coda an entire decade ago, but Runestone has me excited once again.

You can find Runestone on the App Store, where it is availabe as a free download for both iPhone and iPad.